#ifndef _USR_SPI_CONNECTION_H_
#define _USR_SPI_CONNECTION_H_

#define BUS_CLOCK 32000000 /* 32M */
#define SPI_FREQUENCY 2


#include <stdint-gcc.h>
#include "errcode.h"

/**
 * @brief 初始化 SPI 接口
 * 
 * 配置 GPIO 引脚为 SPI 模式，并初始化 SPI 接口参数。
 */
void spi_init(void);

/**
 * @brief SPI 写读操作
 * 
 * @param wdata 指向要发送的数据缓冲区的指针
 * @param wlen 要发送的数据长度（字节数）
 * @param rdata 指向接收数据缓冲区的指针
 * @param rlen 要接收的数据长度（字节数）
 * 
 * 同时进行 SPI 数据发送和接收操作。
 */
errcode_t usr_spi_writeread(uint8_t *wdata, uint8_t wlen, uint8_t *rdata, uint8_t rlen);

/**
 * @brief SPI 写操作
 * 
 * @param wdata 指向要发送的数据缓冲区的指针
 * @param wlen 要发送的数据长度（字节数）
 * 
 * 仅进行 SPI 数据发送操作。
 */
errcode_t usr_spi_write(uint8_t *wdata, uint8_t wlen);

/**
 * @brief SPI 读操作
 * 
 * @param rdata 指向接收数据缓冲区的指针
 * @param rlen 要接收的数据长度（字节数）
 * 
 * 仅进行 SPI 数据接收操作。
 */
void usr_spi_read(uint8_t *rdata, uint8_t rlen);


#endif